package com.zjw.core.algorithm;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class TT {

    public static void main(String[] args) {
        int total = 255;
        System.out.println(total + "=>" + getArrForTotal(total));
    }

    public static List<Integer> getArrForTotal(int total) {
        List<Integer> n2Arr = new ArrayList<>(); // 存储所有小于total的2的n次方数值
        List<Integer> bitArr = new ArrayList<>(); // 结果

        BigInteger t = BigInteger.valueOf(2);
        int n = 0;
        while (t.pow(n).intValue() < total) {
            n2Arr.add(t.pow(n).intValue());
            n++;
        }
        // 进行位与运算
        for (int i = 0; i < n2Arr.size(); i++) {
            if ((n2Arr.get(i) & total) != 0) {
                bitArr.add(n2Arr.get(i));
            }
        }
        return bitArr;
    }
}
